package com.wtwd.device.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wtwd.device.model.dto.DeviceHeartRateTotalDto;
import com.wtwd.device.model.entity.DeviceBloodOxygenTotal;
import com.wtwd.device.model.entity.DeviceHeartRate;
import com.wtwd.device.model.entity.DeviceHeartRateTotal;
import com.wtwd.device.model.vo.DeviceHeartRateTotalVo;
import com.wtwd.device.model.vo.HeartRateVo;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author mjy
 * @since 2024-05-27
 */
public interface AppDeviceHeartRateTotalService extends IService<DeviceHeartRateTotal> {

    /**
     * 根据设备id 和当前时间插入或者更新
     *
     * @param heartRateTotal
     * @return
     */
    Boolean insertOrUpdate(DeviceHeartRateTotal heartRateTotal);

    /**
     * 根据设备id 和时间获取 统计值
     *
     * @param deviceId
     * @param time
     * @return
     */
    DeviceHeartRateTotal getDeviceHeartRateTotal(Long deviceId, long time);

    /**
     * 起始时间为一天的起始时间戳
     *
     * @param deviceId
     * @param startTime
     * @param endTime
     * @return
     */
    List<DeviceHeartRateTotal> getDaysHeartRate(Long deviceId, String startTime, String endTime);

    /**
     * 起始时间为某天凌晨的时间
     *
     * @param deviceId
     * @param time
     * @return
     */
    DeviceHeartRateTotalVo getDayHeartRateByTime(Long deviceId, Long id, String time);

    /**
     * 获取某天的心率统计信息
     *
     * @param deviceId
     * @param time
     * @return
     */
    DeviceHeartRateTotal getDayDeviceHeartRateTotalByTime(Long deviceId, String time);

    /**
     * 同步心率统计数据及设备心率数据
     *
     * @return
     */
    List<DeviceHeartRateTotal> synchronizationHeartRate(List<DeviceHeartRateTotalDto> deviceHeartRateTotalDtos);


    /**
     * 批量插入或者更新
     *
     * @param deviceHeartRateTotals
     * @return
     */
    boolean bathInsertOrUpdate(List<DeviceHeartRateTotal> deviceHeartRateTotals);

    /**
     * 通过日期查询一台设备数据最新那条数据
     */
    HeartRateVo selectHeartRateByTime(Long deviceId, String time);

}
